SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCREND_ANUL_I01]       
/*---------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                  --*/      
/*---Cliente              : OFISIS                --*/      
/*---Sistema              : Presupuesto                  --*/      
/*---M¸dulo               : Empresa                      --*/      
/*---Programa             : Inserta Cabecera de Anulaci©n de    --*/       
/*---                       Rendiciones, Inserta detalle de     --*/      
/*---       Rendici©n en Detalle Anulaci©n,  --*/       
/*---       Actualiza Rendici©n (TI_SITU) --*/      
/*---Script               : tcorde_pago.sql              --*/      
/*---Nombre SP            : SP_TCREND_ANUL_I01          --*/      
/*---Desarrollado por     : Eduardo Vivar P.             --*/      
/*---Fecha Creaci¸n       : 19/07/1999                   --*/      
/*---Base Datos           : Microsoft Sql Server         --*/      
/*---Versi¸n              : 7                            --*/      
/*---Invoca a SP          :                              --*/      
/*---------------------------------------------------------*/        
/*---------------------------------------------------------*/    
/*---Modificado 1 por     : Eduardo Vivar P.             --*/      
/*---Fecha Modificaci¸n   : 12/06/2000                   --*/       
/*---Detalle Modificaci¸n : Desasociar Rendici©n a Mov. Bancos  --*/      
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 2 por     : Carlos Marquez E.            --*/      
/*---Fecha Modificaci¸n   : 12/06/2003                   --*/       
/*---Detalle Modificaci¸n : Se graba CO_UNID_CNTB en la Anulacic.-*/      
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 3 por     : Maribel Julca Rodriguez    --*/      
/*---Fecha Modificaci©n   : 21/04/2005                 --*/       
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/      
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 4 por     : Carlos Marquez               --*/  
/*---Fecha Modificaci«n   : 19/08/2005                   --*/  
/*---Detalle Modificaci«n : manejo de Provisiones No Autom--*/  
/*---------------------------------------------------------*/      
/*---------------------------------------------------------*/    
/*---Comentarios                                         --*/      
/*---                                                    --*/      
/*---                                                    --*/      
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/  
/*---Drop Proc SP_TCREND_ANUL_I01                        --*/      
/*---Grant all on SP_TCREND_ANUL_I01 to public           --*/       
/*---SP_TCREND_ANUL_I01                        --*/      
/*---------------------------------------------------------*/    
      
@ISCO_EMPR  TD_VC_002,      
@ISCO_USUA_MODI TD_VC_008_USUA,      
@ISCO_UNID_CONC TD_VC_003,      
@ISNU_REND_GAST TD_VC_010,      
@IDFE_REND_GAST TD_DT_001,      
@IDFE_ANUL  TD_DT_001  
 As  
Declare       
@VSST_PROV_AUTO TD_VC_001,    
@CSCO_EMPR  TD_VC_003,       
@CSNU_REND_GAST TD_VC_010,       
@CSNU_CORR_GAST TD_IN_001,       
@CSTI_ENTI  TD_VC_001,       
@CSCO_ENTI  TD_VC_020,       
@CSDE_ENTI  TD_VC_100,       
@CSCO_TIPO_DOCU TD_VC_003,       
@CSNU_DOCU_PROV TD_VC_020,       
@CNFA_CAMB_DOCU TD_NU_015_006,       
@CSCO_MONE  TD_VC_003,       
@CNIM_DOCU  TD_NU_016_004,       
@CDFE_DOCU  TD_DT_001,       
@CNIM_CONV  TD_NU_016_004,       
@CSCO_TIPO_OPER TD_VC_003,      
@CNNU_CNEM_REND TD_IN_001,         
@CSCO_UNCN_REND TD_VC_003,        
@CSCO_OPCN_REND TD_VC_003,        
@CNNU_ANNO_REND TD_IN_001,        
@CNNU_MESE_REND TD_IN_001,        
@CNNU_ASTO_REND TD_VC_010,      
@CSCO_UNID_CNTB TD_VC_003,      
@CSCO_CNTA_EMPR TD_VC_010,       
@CSDE_OBSE  TD_VC_100,      
@VSCO_TIPO_EGAN TD_VC_003,         
@VSST_GEAS_ANUL TD_VC_001,      
@VSCO_UNID_CNTB TD_VC_003,      
@VSCO_TIPO_OPE1 TD_VC_003,      
@VSNU_ASTO TD_VC_010,      
@VDFE_REGI_COMP TD_DT_001,      
@VSCO_UNID_CONC TD_VC_003,      
@VSAA_OPER_DEST TD_VC_004,      
@VSMM_OPER_DEST TD_VC_002,      
@VSCO_BANC_DEST TD_VC_003,      
@VSNU_CNTA_DEST TD_VC_020,      
@VSCO_CAJA_DEST TD_VC_008,      
@VSNU_COMP_DEST TD_VC_008      
      
      
 Begin Tran SP_TCREND_ANUL_I01      
      
 /** Actualiza la Rendici©n de Gastos TI_SITU  **/      
   
 SELECT @VSST_PROV_AUTO = ST_PROV_AUTO, @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL      
 FROM   TMPARA_TESO       
 WHERE  CO_EMPR = @ISCO_EMPR      
   
 Update TCREND_GAST      
 Set TI_SITU = 'ANU',                    
 CO_USUA_MODI = @ISCO_USUA_MODI,       
 FE_USUA_MODI = GETDATE()      
 Where CO_EMPR = @ISCO_EMPR      
 And CO_UNID_CONC = @ISCO_UNID_CONC      
 And NU_REND_GAST = @ISNU_REND_GAST      
 And FE_REND_GAST = @IDFE_REND_GAST      
   
 Select @VSAA_OPER_DEST = AA_OPER_DEST, @VSMM_OPER_DEST = MM_OPER_DEST, @VSCO_BANC_DEST = CO_BANC_DEST,       
   @VSNU_CNTA_DEST = NU_CNTA_DEST, @VSCO_CAJA_DEST = CO_CAJA_DEST, @VSNU_COMP_DEST = NU_COMP_DEST      
 From TCREND_GAST      
 Where CO_EMPR = @ISCO_EMPR      
 And CO_UNID_CONC = @ISCO_UNID_CONC      
 And NU_REND_GAST = @ISNU_REND_GAST      
 And FE_REND_GAST = @IDFE_REND_GAST      
   
 /** Actualiza los Mov. Bancos que tengan asociada esa Rendici©n y sus datos **/      
 Update TCMOVI_BANC       
 Set TCMOVI_BANC.NU_REND_GAST =  NULL,      
  TCMOVI_BANC.CO_BANC_ENRE = NULL,      
  TCMOVI_BANC.NU_CNTA_ENRE = NULL,      
  TCMOVI_BANC.AA_ENRE = NULL,      
  TCMOVI_BANC.MM_ENRE = NULL,      
  TCMOVI_BANC.NU_COMP_ENRE = NULL,      
  TCMOVI_BANC.CO_USUA_MODI = @ISCO_USUA_MODI,       
  TCMOVI_BANC.FE_USUA_MODI = GETDATE()      
 FROM TCREND_GAST T2      
 Where TCMOVI_BANC.CO_EMPR = @ISCO_EMPR      
 And TCMOVI_BANC.NU_REND_GAST = @ISNU_REND_GAST      
 And TCMOVI_BANC.CO_EMPR = T2.CO_EMPR      
 And TCMOVI_BANC.NU_REND_GAST = T2.NU_REND_GAST      
 And T2.CO_UNID_CONC = @ISCO_UNID_CONC      
 And T2.FE_REND_GAST = @IDFE_REND_GAST      
 And TCMOVI_BANC.CO_BANC = @VSCO_BANC_DEST      
 And TCMOVI_BANC.NU_CNTA_BANC = @VSNU_CNTA_DEST      
 And TCMOVI_BANC.AA_BNCO = @VSAA_OPER_DEST      
 And TCMOVI_BANC.MM_BNCO = @VSMM_OPER_DEST      
 And TCMOVI_BANC.TI_MOVI_BANC = 'E'      
 And TCMOVI_BANC.NU_COMP_BANC = @VSNU_COMP_DEST      
   
 If @@error <> 0      
 Begin      
  Rollback tran       
  Return      
 End         
   
 /** Actualiza los Mov. Caja que tengan asociada esa Rendici©n y sus datos **/      
 Update TCMOVI_CAJA       
 Set TCMOVI_CAJA.NU_REND_GAST =  NULL,      
  TCMOVI_CAJA.CO_CAJA_ENRE = NULL,      
  TCMOVI_CAJA.AA_ENRE = NULL,      
  TCMOVI_CAJA.MM_ENRE = NULL,      
  TCMOVI_CAJA.NU_COMP_ENRE = NULL,      
  TCMOVI_CAJA.CO_USUA_MODI = @ISCO_USUA_MODI,      
  TCMOVI_CAJA.FE_USUA_MODI = GETDATE()      
 FROM TCREND_GAST T2      
 Where TCMOVI_CAJA.CO_EMPR = @ISCO_EMPR      
 And TCMOVI_CAJA.NU_REND_GAST = @ISNU_REND_GAST      
 And TCMOVI_CAJA.CO_EMPR = T2.CO_EMPR      
 And TCMOVI_CAJA.NU_REND_GAST = T2.NU_REND_GAST       
 And T2.CO_UNID_CONC = @ISCO_UNID_CONC      
 And T2.FE_REND_GAST = @IDFE_REND_GAST      
 And TCMOVI_CAJA.CO_CAJA = @VSCO_BANC_DEST      
 And TCMOVI_CAJA.AA_CAJA = @VSAA_OPER_DEST      
 And TCMOVI_CAJA.MM_CAJA = @VSMM_OPER_DEST      
 And TCMOVI_CAJA.TI_MOVI = 'E'      
 And TCMOVI_CAJA.NU_COMP_CAJA = @VSNU_COMP_DEST      
   
 /** Optiene la Unidad Contable del Detalle de la Rendici©n Gastos **/      
/* Select @VSCO_UNID_CNTB = Max(CO_UNID_CONC)      
 From TDREND_GAST      
 Where CO_EMPR = @ISCO_EMPR      
 And NU_REND_GAST = @ISNU_REND_GAST                     
 And FE_REND_GAST = @IDFE_REND_GAST      
   
 select @VSCO_UNID_CNTB = IsNull(@VSCO_UNID_CNTB, @ISCO_UNID_CONC)  */
   
 /** Inserta en Cabecera Anulaci©n de Rendici©n Gastos **/      
 Insert TCREND_ANUL(CO_EMPR, CO_UNID_CONC, NU_REND_GAST, FE_REND_GAST, FE_ANUL, ST_CONT, CO_USUA_CREA,FE_USUA_CREA,    
CO_USUA_MODI, FE_USUA_MODI)      
 VALUES(@ISCO_EMPR, @ISCO_UNID_CONC, @ISNU_REND_GAST, @IDFE_REND_GAST, @IDFE_ANUL, 'N', @ISCO_USUA_MODI,GETDATE(),    
@ISCO_USUA_MODI, GETDATE())      
   
 If @@error <> 0      
 Begin      
 Rollback tran      
 Return      
 End        
   
 /** Inserta en Detalle Anulaci©n de Rendici©n Gastos **/      
   
 Declare CU_TCREND_ANUL_I01 Cursor      
 For      
 Select CO_EMPR, NU_REND_GAST, NU_CORR_GAST, CO_UNID_CONC, TI_ENTI, CO_ENTI,       
 DE_ENTI, CO_TIPO_DOCU, NU_DOCU_PROV, FA_CAMB_DOCU, CO_MONE, IM_DOCU, FE_DOCU, IM_CONV,       
 CO_TIPO_OPER, CO_CNTA_EMPR, DE_OBSE      
 From TDREND_GAST      
 Where CO_EMPR = @ISCO_EMPR      
 And CO_UNID_CONC = @ISCO_UNID_CONC
 And NU_REND_GAST = @ISNU_REND_GAST                     
 And FE_REND_GAST = @IDFE_REND_GAST      
   
 Open CU_TCREND_ANUL_I01      
 Fetch CU_TCREND_ANUL_I01 into @CSCO_EMPR, @CSNU_REND_GAST, @CSNU_CORR_GAST,       
 @VSCO_UNID_CNTB, @CSTI_ENTI, @CSCO_ENTI,       
 @CSDE_ENTI, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CNFA_CAMB_DOCU, @CSCO_MONE, @CNIM_DOCU, @CDFE_DOCU, @CNIM_CONV,       
 @CSCO_TIPO_OPER, @CSCO_CNTA_EMPR, @CSDE_OBSE      
   
   
   
 While (@@FETCH_STATUS = 0)      
 Begin      
  If (@@FETCH_STATUS < 0)      
  Begin      
   RAISERROR 20001 'FIN DE ARCHIVO'      
   Close CU_TCREND_ANUL_I01      
   Deallocate CU_TCREND_ANUL_I01      
   Rollback tran      
   Return      
  End      
   
  If @VSST_GEAS_ANUL = 'N'      
   Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN      
  Else      
   Select @VSCO_TIPO_OPE1 = @CSCO_TIPO_OPER       
   
  UPDATE TDREND_GAST SET CO_TIPO_OPER = @VSCO_TIPO_OPE1      
  WHERE CURRENT OF CU_TCREND_ANUL_I01      
   
   
  Insert TDREND_ANUL(CO_EMPR, CO_UNID_CONC, NU_REND_GAST, FE_REND_GAST, NU_CORR_GAST,       
  TI_ENTI, CO_ENTI,       
  DE_ENTI, CO_TIPO_DOCU, NU_DOCU_PROV, FA_CAMB_DOCU, CO_MONE, IM_DOCU, FE_DOCU, IM_CONV,       
  CO_TIPO_OPER, CO_CNTA_EMPR,CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, DE_OBSE)                      
  Values(@CSCO_EMPR, @ISCO_UNID_CONC, @CSNU_REND_GAST, @IDFE_REND_GAST, @CSNU_CORR_GAST,       
  @CSTI_ENTI, @CSCO_ENTI,       
  @CSDE_ENTI, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CNFA_CAMB_DOCU, @CSCO_MONE, @CNIM_DOCU, @CDFE_DOCU,    
@CNIM_CONV,      
  @VSCO_TIPO_OPE1, @CSCO_CNTA_EMPR, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE(), @CSDE_OBSE)      
    
  If @@error <> 0      
  Begin      
   Close CU_TCREND_ANUL_I01      
   Deallocate CU_TCREND_ANUL_I01      
   Rollback tran      
   Return      
  End         
  
  if @VSST_PROV_AUTO  = 'S'  
  Begin   
  
   Delete TDPROG_PAGO      
   Where CO_EMPR = @CSCO_EMPR      
   And   CO_PROV = @CSCO_ENTI      
   And   CO_TIPO_DOCU = @CSCO_TIPO_DOCU      
   And   NU_DOCU_PROV = @CSNU_DOCU_PROV      
     
   If @@error <> 0      
   Begin      
    Close CU_TCREND_ANUL_I01      
    Deallocate CU_TCREND_ANUL_I01      
    Rollback tran      
    Return      
   End         
  
  
   Delete TDDISP_CCOS      
   Where CO_EMPR = @CSCO_EMPR      
   And   CO_PROV = @CSCO_ENTI      
   And   CO_TIPO_DOCU = @CSCO_TIPO_DOCU      
   And   NU_DOCU_PROV = @CSNU_DOCU_PROV      
     
   If @@error <> 0      
   Begin      
    Close CU_TCREND_ANUL_I01      
    Deallocate CU_TCREND_ANUL_I01      
    Rollback tran      
    Return      
   End         
   
   
   Select @VSNU_ASTO = NU_ASTO, @VDFE_REGI_COMP = FE_REGI_COMP,      
   @VSCO_UNID_CONC = CO_UNID_CONC      
   From TMDOCU_PROV      
   Where CO_EMPR = @ISCO_EMPR      
   And CO_PROV = @CSCO_ENTI      
   And CO_TIPO_DOCU = @CSCO_TIPO_DOCU      
   And NU_DOCU_PROV = @CSNU_DOCU_PROV      
    
    
   Delete TMDOCU_PROV       
   Where CO_EMPR = @CSCO_EMPR       And   CO_PROV = @CSCO_ENTI      
   And   CO_TIPO_DOCU = @CSCO_TIPO_DOCU      
   And   NU_DOCU_PROV = @CSNU_DOCU_PROV      
     
   If @@error <> 0      
   Begin      
    Close CU_TCREND_ANUL_I01      
    Deallocate CU_TCREND_ANUL_I01      
    Rollback tran      
    Return      
  
   End         
   
    
   If Rtrim(IsNull(@VSNU_ASTO, '')) != ''      
   Begin      
   Update TXMVTO_CNTB      
   Set SI_MVTO_CNTB = 'ELI',    
   CO_USUA_MODI = @ISCO_USUA_MODI,       
   FE_USUA_MODI = GETDATE()        
   Where CO_EMPR = @ISCO_EMPR      
   And NU_CNTB_EMPR = 1      
   And CO_UNID_CNTB = @VSCO_UNID_CONC      
   And CO_OPRC_CNTB = Left(@VSNU_ASTO, 3)      
   And NU_ANNO = Year(@VDFE_REGI_COMP)      
   And NU_MESE = Month(@VDFE_REGI_COMP)      
   And NU_ASTO = '00000' + Right(@VSNU_ASTO, 5)      
    
   If @@error <> 0      
   Begin      
    Close CU_TCREND_ANUL_I01      
    Deallocate CU_TCREND_ANUL_I01      
    Rollback tran      
    Return      
   End         
  End --- Si Existe Provisi½n Automatica.  
  
 End      
   
   
 Fetch CU_TCREND_ANUL_I01 into @CSCO_EMPR, @CSNU_REND_GAST, @CSNU_CORR_GAST,       
 @CSCO_UNID_CNTB, @CSTI_ENTI, @CSCO_ENTI,       
 @CSDE_ENTI, @CSCO_TIPO_DOCU, @CSNU_DOCU_PROV, @CNFA_CAMB_DOCU, @CSCO_MONE, @CNIM_DOCU, @CDFE_DOCU, @CNIM_CONV,       
 @CSCO_TIPO_OPER, @CSCO_CNTA_EMPR, @CSDE_OBSE      
   
 End      
   
 Close CU_TCREND_ANUL_I01      
 Deallocate CU_TCREND_ANUL_I01      
   
Commit Transaction      
/**------------------ Fin ---------------------**/

GO
